
import AdditDmgBase from "../module/addit_dmg_effect/AdditDmgBase";
import PyFireballEff from "../module/addit_dmg_effect/PyFireballEff";
import PyLightningChainEff from "../module/addit_dmg_effect/PyLightningChainEff";
import { AdditDmgClassConstructor } from "../types/lbase";
import { DMG_TYPE_CONFIG } from "./DmgFieldConfig"
import {  DmgType, DmgTypeKey, UnitAttr } from "../types/L_Type"


export type AdditDmgEffTypeKey=keyof AdditDmgEffType



export type AdditDmgAttr<>={
    name:string,
    /**是否平砍触发 */
    ordChoppingTrg:boolean,
    /**是否技能触发 */
    abilityTrg:boolean,
    /**是否物理技能触发  默认为是  强制为否时具备排它特性ablityTrg */
    physicAblityTrg?:boolean | true,
    /**触发系数  x% */
    trgProb:number,
    /**基础伤害  x */
    baseDmg:number,
    /**物理特性可以获取的%比攻击力转换为特效base伤害系数  直乘倍率(小数) */
    physicDmgMul:number,
    /**法术特性可以获取的%比法伤转换为特效base伤害系数  直乘倍率(小数)  */
    migicDmgMul:number,
    /**特效伤害最终伤害类型  x% */
    dmgType:DmgTypeKey,
    /**其他基础攻击属性加成 */
    extraDmgAttr?:UnitAttr,
    /**特效专属拓展属性 需要才配置*/
    exclusiveAttr?:object,
    /**攻击特效的实现类 */
    impClass:AdditDmgClassConstructor

}

export  type AdditDmgEffType= Record<
    "phyFireball" | "pyhLightningChain",
    AdditDmgAttr
>

//附加攻击特效类型
export const AdditDmgEffectConfig:AdditDmgEffType={
    //物理触发火球
    phyFireball:{
        name:"物理火球",
        ordChoppingTrg:true,
        abilityTrg:true,
        trgProb:45,
        baseDmg:170,
        physicDmgMul:2,
        migicDmgMul:0,
        dmgType:DMG_TYPE_CONFIG.fire.key,
        extraDmgAttr:{
            cri:80,
            aia:50
        },
        impClass:PyFireballEff
    },
    //物理触发闪电链
    pyhLightningChain:{
        name:"物理闪电链",
        ordChoppingTrg:true,
        abilityTrg:true,
        trgProb:35,
        baseDmg:203,
        physicDmgMul:1.5,
        migicDmgMul:1.5,
        dmgType:DMG_TYPE_CONFIG.thunder.key,
        extraDmgAttr:{
            aia:100,
            hit:80
        },
        impClass:PyLightningChainEff
    }


}